/*
 * The MIT License (MIT)
 *
 * Copyright (c) 2014-2017 abel533@gmail.com
 *
 * Permission is hereby granted, free of charge, to any person obtaining a copy
 * of this software and associated documentation files (the "Software"), to deal
 * in the Software without restriction, including without limitation the rights
 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 * copies of the Software, and to permit persons to whom the Software is
 * furnished to do so, subject to the following conditions:
 *
 * The above copyright notice and this permission notice shall be included in
 * all copies or substantial portions of the Software.
 *
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
 * THE SOFTWARE.
 */

package tk.mybatis.mapper.model;

import java.util.ArrayList;
import java.util.List;

public class CountryExample {
  /**
   * This field was generated by MyBatis Generator.
   * This field corresponds to the database table country
   *
   * @mbggenerated Sat Mar 07 11:52:52 CST 2015
   */
  protected String orderByClause;

  /**
   * This field was generated by MyBatis Generator.
   * This field corresponds to the database table country
   *
   * @mbggenerated Sat Mar 07 11:52:52 CST 2015
   */
  protected boolean distinct;

  /**
   * This field was generated by MyBatis Generator.
   * This field corresponds to the database table country
   *
   * @mbggenerated Sat Mar 07 11:52:52 CST 2015
   */
  protected List<Criteria> oredCriteria;

  /**
   * This method was generated by MyBatis Generator.
   * This method corresponds to the database table country
   *
   * @mbggenerated Sat Mar 07 11:52:52 CST 2015
   */
  public CountryExample() {
    oredCriteria = new ArrayList<Criteria>();
  }

  /**
   * This method was generated by MyBatis Generator.
   * This method corresponds to the database table country
   *
   * @mbggenerated Sat Mar 07 11:52:52 CST 2015
   */
  public void or(Criteria criteria) {
    oredCriteria.add(criteria);
  }

  /**
   * This method was generated by MyBatis Generator.
   * This method corresponds to the database table country
   *
   * @mbggenerated Sat Mar 07 11:52:52 CST 2015
   */
  public Criteria or() {
    Criteria criteria = createCriteriaInternal();
    oredCriteria.add(criteria);
    return criteria;
  }

  /**
   * This method was generated by MyBatis Generator.
   * This method corresponds to the database table country
   *
   * @mbggenerated Sat Mar 07 11:52:52 CST 2015
   */
  public Criteria createCriteria() {
    Criteria criteria = createCriteriaInternal();
    if (oredCriteria.size() == 0) {
      oredCriteria.add(criteria);
    }
    return criteria;
  }

  /**
   * This method was generated by MyBatis Generator.
   * This method corresponds to the database table country
   *
   * @mbggenerated Sat Mar 07 11:52:52 CST 2015
   */
  protected Criteria createCriteriaInternal() {
    Criteria criteria = new Criteria();
    return criteria;
  }

  /**
   * This method was generated by MyBatis Generator.
   * This method corresponds to the database table country
   *
   * @mbggenerated Sat Mar 07 11:52:52 CST 2015
   */
  public void clear() {
    oredCriteria.clear();
    orderByClause = null;
    distinct = false;
  }

  /**
   * This method was generated by MyBatis Generator.
   * This method corresponds to the database table country
   *
   * @mbggenerated Sat Mar 07 11:52:52 CST 2015
   */
  public String getOrderByClause() {
    return orderByClause;
  }

  /**
   * This method was generated by MyBatis Generator.
   * This method corresponds to the database table country
   *
   * @mbggenerated Sat Mar 07 11:52:52 CST 2015
   */
  public void setOrderByClause(String orderByClause) {
    this.orderByClause = orderByClause;
  }

  /**
   * This method was generated by MyBatis Generator.
   * This method corresponds to the database table country
   *
   * @mbggenerated Sat Mar 07 11:52:52 CST 2015
   */
  public List<Criteria> getOredCriteria() {
    return oredCriteria;
  }

  /**
   * This method was generated by MyBatis Generator.
   * This method corresponds to the database table country
   *
   * @mbggenerated Sat Mar 07 11:52:52 CST 2015
   */
  public boolean isDistinct() {
    return distinct;
  }

  /**
   * This method was generated by MyBatis Generator.
   * This method corresponds to the database table country
   *
   * @mbggenerated Sat Mar 07 11:52:52 CST 2015
   */
  public void setDistinct(boolean distinct) {
    this.distinct = distinct;
  }

  /**
   * This class was generated by MyBatis Generator.
   * This class corresponds to the database table country
   *
   * @mbggenerated Sat Mar 07 11:52:52 CST 2015
   */
  protected abstract static class GeneratedCriteria {
    protected List<Criterion> criteria;

    protected GeneratedCriteria() {
      super();
      criteria = new ArrayList<Criterion>();
    }

    protected void addCriterion(String condition) {
      if (condition == null) {
        throw new RuntimeException("Value for condition cannot be null");
      }
      criteria.add(new Criterion(condition));
    }

    protected void addCriterion(String condition, Object value, String property) {
      if (value == null) {
        throw new RuntimeException("Value for " + property + " cannot be null");
      }
      criteria.add(new Criterion(condition, value));
    }

    protected void addCriterion(String condition, Object value1, Object value2, String property) {
      if (value1 == null || value2 == null) {
        throw new RuntimeException("Between values for " + property + " cannot be null");
      }
      criteria.add(new Criterion(condition, value1, value2));
    }

    public Criteria andIdIsNull() {
      addCriterion("Id is null");
      return (Criteria) this;
    }

    public Criteria andIdIsNotNull() {
      addCriterion("Id is not null");
      return (Criteria) this;
    }

    public Criteria andIdEqualTo(Integer value) {
      addCriterion("Id =", value, "id");
      return (Criteria) this;
    }

    public Criteria andIdNotEqualTo(Integer value) {
      addCriterion("Id <>", value, "id");
      return (Criteria) this;
    }

    public Criteria andIdGreaterThan(Integer value) {
      addCriterion("Id >", value, "id");
      return (Criteria) this;
    }

    public Criteria andIdGreaterThanOrEqualTo(Integer value) {
      addCriterion("Id >=", value, "id");
      return (Criteria) this;
    }

    public Criteria andIdLessThan(Integer value) {
      addCriterion("Id <", value, "id");
      return (Criteria) this;
    }

    public Criteria andIdLessThanOrEqualTo(Integer value) {
      addCriterion("Id <=", value, "id");
      return (Criteria) this;
    }

    public Criteria andIdIn(List<Integer> values) {
      addCriterion("Id in", values, "id");
      return (Criteria) this;
    }

    public Criteria andIdNotIn(List<Integer> values) {
      addCriterion("Id not in", values, "id");
      return (Criteria) this;
    }

    public Criteria andIdBetween(Integer value1, Integer value2) {
      addCriterion("Id between", value1, value2, "id");
      return (Criteria) this;
    }

    public Criteria andIdNotBetween(Integer value1, Integer value2) {
      addCriterion("Id not between", value1, value2, "id");
      return (Criteria) this;
    }

    public Criteria andCountrynameIsNull() {
      addCriterion("countryname is null");
      return (Criteria) this;
    }

    public Criteria andCountrynameIsNotNull() {
      addCriterion("countryname is not null");
      return (Criteria) this;
    }

    public Criteria andCountrynameEqualTo(String value) {
      addCriterion("countryname =", value, "countryname");
      return (Criteria) this;
    }

    public Criteria andCountrynameNotEqualTo(String value) {
      addCriterion("countryname <>", value, "countryname");
      return (Criteria) this;
    }

    public Criteria andCountrynameGreaterThan(String value) {
      addCriterion("countryname >", value, "countryname");
      return (Criteria) this;
    }

    public Criteria andCountrynameGreaterThanOrEqualTo(String value) {
      addCriterion("countryname >=", value, "countryname");
      return (Criteria) this;
    }

    public Criteria andCountrynameLessThan(String value) {
      addCriterion("countryname <", value, "countryname");
      return (Criteria) this;
    }

    public Criteria andCountrynameLessThanOrEqualTo(String value) {
      addCriterion("countryname <=", value, "countryname");
      return (Criteria) this;
    }

    public Criteria andCountrynameLike(String value) {
      addCriterion("countryname like", value, "countryname");
      return (Criteria) this;
    }

    public Criteria andCountrynameNotLike(String value) {
      addCriterion("countryname not like", value, "countryname");
      return (Criteria) this;
    }

    public Criteria andCountrynameIn(List<String> values) {
      addCriterion("countryname in", values, "countryname");
      return (Criteria) this;
    }

    public Criteria andCountrynameNotIn(List<String> values) {
      addCriterion("countryname not in", values, "countryname");
      return (Criteria) this;
    }

    public Criteria andCountrynameBetween(String value1, String value2) {
      addCriterion("countryname between", value1, value2, "countryname");
      return (Criteria) this;
    }

    public Criteria andCountrynameNotBetween(String value1, String value2) {
      addCriterion("countryname not between", value1, value2, "countryname");
      return (Criteria) this;
    }

    public Criteria andCountrycodeIsNull() {
      addCriterion("countrycode is null");
      return (Criteria) this;
    }

    public Criteria andCountrycodeIsNotNull() {
      addCriterion("countrycode is not null");
      return (Criteria) this;
    }

    public Criteria andCountrycodeEqualTo(String value) {
      addCriterion("countrycode =", value, "countrycode");
      return (Criteria) this;
    }

    public Criteria andCountrycodeNotEqualTo(String value) {
      addCriterion("countrycode <>", value, "countrycode");
      return (Criteria) this;
    }

    public Criteria andCountrycodeGreaterThan(String value) {
      addCriterion("countrycode >", value, "countrycode");
      return (Criteria) this;
    }

    public Criteria andCountrycodeGreaterThanOrEqualTo(String value) {
      addCriterion("countrycode >=", value, "countrycode");
      return (Criteria) this;
    }

    public Criteria andCountrycodeLessThan(String value) {
      addCriterion("countrycode <", value, "countrycode");
      return (Criteria) this;
    }

    public Criteria andCountrycodeLessThanOrEqualTo(String value) {
      addCriterion("countrycode <=", value, "countrycode");
      return (Criteria) this;
    }

    public Criteria andCountrycodeLike(String value) {
      addCriterion("countrycode like", value, "countrycode");
      return (Criteria) this;
    }

    public Criteria andCountrycodeNotLike(String value) {
      addCriterion("countrycode not like", value, "countrycode");
      return (Criteria) this;
    }

    public Criteria andCountrycodeIn(List<String> values) {
      addCriterion("countrycode in", values, "countrycode");
      return (Criteria) this;
    }

    public Criteria andCountrycodeNotIn(List<String> values) {
      addCriterion("countrycode not in", values, "countrycode");
      return (Criteria) this;
    }

    public Criteria andCountrycodeBetween(String value1, String value2) {
      addCriterion("countrycode between", value1, value2, "countrycode");
      return (Criteria) this;
    }

    public Criteria andCountrycodeNotBetween(String value1, String value2) {
      addCriterion("countrycode not between", value1, value2, "countrycode");
      return (Criteria) this;
    }

    public List<Criterion> getAllCriteria() {
      return criteria;
    }

    public List<Criterion> getCriteria() {
      return criteria;
    }

    public boolean isValid() {
      return criteria.size() > 0;
    }
  }

  /**
   * This class was generated by MyBatis Generator.
   * This class corresponds to the database table country
   *
   * @mbggenerated do_not_delete_during_merge Sat Mar 07 11:52:52 CST 2015
   */
  public static class Criteria extends GeneratedCriteria {

    protected Criteria() {
      super();
    }
  }

  /**
   * This class was generated by MyBatis Generator.
   * This class corresponds to the database table country
   *
   * @mbggenerated Sat Mar 07 11:52:52 CST 2015
   */
  public static class Criterion {
    private String condition;

    private Object value;

    private Object secondValue;

    private boolean noValue;

    private boolean singleValue;

    private boolean betweenValue;

    private boolean listValue;

    private String typeHandler;

    protected Criterion(String condition) {
      super();
      this.condition = condition;
      this.typeHandler = null;
      this.noValue = true;
    }

    protected Criterion(String condition, Object value, String typeHandler) {
      super();
      this.condition = condition;
      this.value = value;
      this.typeHandler = typeHandler;
      if (value instanceof List<?>) {
        this.listValue = true;
      } else {
        this.singleValue = true;
      }
    }

    protected Criterion(String condition, Object value) {
      this(condition, value, null);
    }

    protected Criterion(String condition, Object value, Object secondValue, String typeHandler) {
      super();
      this.condition = condition;
      this.value = value;
      this.secondValue = secondValue;
      this.typeHandler = typeHandler;
      this.betweenValue = true;
    }

    protected Criterion(String condition, Object value, Object secondValue) {
      this(condition, value, secondValue, null);
    }

    public String getCondition() {
      return condition;
    }

    public Object getSecondValue() {
      return secondValue;
    }

    public String getTypeHandler() {
      return typeHandler;
    }

    public Object getValue() {
      return value;
    }

    public boolean isBetweenValue() {
      return betweenValue;
    }

    public boolean isListValue() {
      return listValue;
    }

    public boolean isNoValue() {
      return noValue;
    }

    public boolean isSingleValue() {
      return singleValue;
    }
  }
}